import java.awt.Button;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.Label;
import java.awt.Rectangle;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import javax.swing.JComboBox;
import javax.swing.JFrame;

public class RezeptBearbeitenFrame extends JFrame {

	/**
	 * 
	 */
	String sep = KochbuchMain.sep;
	private static final long serialVersionUID = 1L;
	Rectangle rlTitel = new Rectangle(0,10,100,20);
	Rectangle rTitel = new Rectangle(450, 10, 300, 20);
	Rectangle rlKategorie = new Rectangle(0, 40, 100, 20);
	Rectangle rKategorie = new Rectangle(450, 40, 300, 20);
	Rectangle rlZutaten = new Rectangle(0, 70, 100, 400);
	Rectangle rZutaten = new Rectangle(100, 70, 350, 400);
	Rectangle rlZubereitung = new Rectangle(500, 70, 100, 400);
	Rectangle rZubereitung = new Rectangle(600, 70, 350, 400);
	Rectangle rlZuZeit = new Rectangle(0, 480, 100, 20);
	Rectangle rZuZeit = new Rectangle(100, 480, 350, 20);
	Rectangle rlKoZeit = new Rectangle(500, 480, 100, 20);
	Rectangle rKoZeit = new Rectangle(600, 480, 350, 20);
	Rectangle rlSchwierigkeit = new Rectangle(0, 510, 100, 20);
	Rectangle rSchwierigkeit = new Rectangle(100, 510, 350, 20);
	Rectangle rlBewertung = new Rectangle(0, 540, 100, 20);
	Rectangle rBewertung = new Rectangle(100, 540, 350, 20);
	Rectangle rSpeichern = new Rectangle(450, 570, 300, 20);
	Label lTitel;
	Label lKategorie;
	Label lZutaten;
	Label lZubereitung;
	Label lZuZeit;
	Label lKoZeit;
	Label lSchwierigkeit;
	Label lBewertung;
	TextField tfTitel;
	JComboBox cbKategorie;
	TextArea taZutaten;
	TextArea taZubereitung;
	TextField tfZuZeit;
	TextField tfKoZeit;
	JComboBox cbSchwierigkeit;
	JComboBox cbBewertung;
	Button bSpeichern;
	
	
	String[] kategorieStrings = { "Vorspeise", "Hauptgericht", "Nachspeise", "Backwaren", "Süßspeisen", "Sonstige" };
	String[] schwierigkeitStrings = { "Kinderleicht", "Leicht", "Normal", "Anspruchsvoll", "Extrem Schwer" };
	String[] bewertungStrings = { "Grauenhaft", "Nicht nachkochen", "Für ungebetene Gäste", "Ganz ok", "schmeckt gut", "hammer lecker", "Für besondere Anlässe" };
	
	public RezeptBearbeitenFrame(File rezeptdatei){
		this();
		try {
			Scanner s = new Scanner(rezeptdatei).useDelimiter("\\s*"+sep+"\\s*");
			tfTitel.setText(s.next());
			cbKategorie.setSelectedItem(s.next());
			taZutaten.setText(s.next());
			taZubereitung.setText(s.next());
			tfZuZeit.setText(s.next());
			tfKoZeit.setText(s.next());
			cbSchwierigkeit.setSelectedItem(s.next());
			cbBewertung.setSelectedItem(s.next());
			this.repaint();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			Dialog d = new Dialog(this, "FEHLER, DATEI EXISTIERT NICHT!");
			e.printStackTrace();
		}
	}
	public  RezeptBearbeitenFrame() {
		// Der Titel des Fensters soll der
	     // Name der Klasse sein
	     super(RezeptBearbeitenFrame.class.getName());
	     this.setBounds(100,10, 1000, 650);
	     // Layout-Manager setzen
	     getContentPane().setLayout(null);
	     getContentPane().setBackground(new Color(222,184,135));
	     
	     lTitel = new Label("Rezepttitel");
	     lTitel.setBackground(new Color(139,115,85));
	     lTitel.setForeground(Color.white);
	     lTitel.setBounds(rlTitel);
	    
	     getContentPane().add(lTitel);
	     

	     tfTitel = new TextField("");
	     tfTitel.setBounds(rTitel);
	     tfTitel.setBackground(new Color(255,211,155));
	     getContentPane().add(tfTitel);
	     

	     lKategorie = new Label("Kategorie");
	     lKategorie.setBounds(rlKategorie);
	     lKategorie.setBackground(new Color(139,115,85));
	     lKategorie.setForeground(Color.white);
	     getContentPane().add(lKategorie);
	     
	     cbKategorie = new JComboBox(kategorieStrings);
	     cbKategorie.setBounds(rKategorie);
	     cbKategorie.setBackground(new Color(255,211,155));
	     getContentPane().add(cbKategorie);
	     
	     lZutaten = new Label("Zutaten");
	     lZutaten.setBounds(rlZutaten);
	     lZutaten.setBackground(new Color(139,115,85));
	     lZutaten.setForeground(Color.white);
	     getContentPane().add(lZutaten);
	     
	     taZutaten = new TextArea("");
	     taZutaten.setBounds(rZutaten);
	     taZutaten.setBackground(new Color(255,211,155));
	     getContentPane().add(taZutaten);
	     
	     lZubereitung = new Label("Zubereitung");
	     lZubereitung.setBounds(rlZubereitung);
	     lZubereitung.setBackground(new Color(139,115,85));
	     lZubereitung.setForeground(Color.white);
	     getContentPane().add(lZubereitung);
	     

	     taZubereitung = new TextArea("");
	     taZubereitung.setBounds(rZubereitung);
	     taZubereitung.setBackground(new Color(255,211,155));
	     getContentPane().add(taZubereitung);
	     
	     lZuZeit = new Label("Zubereitungszeit");
	     lZuZeit.setBounds(rlZuZeit);
	     lZuZeit.setBackground(new Color(139,115,85));
	     lZuZeit.setForeground(Color.white);
	     getContentPane().add(lZuZeit);
	     

	     tfZuZeit = new TextField("");
	     tfZuZeit.setBounds(rZuZeit);
	     tfZuZeit.setBackground(new Color(255,211,155));
	     getContentPane().add(tfZuZeit);
	     
	     lKoZeit = new Label("Kochzeit");
	     lKoZeit.setBounds(rlKoZeit);
	     lKoZeit.setBackground(new Color(139,115,85));
	     lKoZeit.setForeground(Color.white);
	     getContentPane().add(lKoZeit);
	     

	     tfKoZeit = new TextField("");
	     tfKoZeit.setBounds(rKoZeit);
	     tfKoZeit.setBackground(new Color(255,211,155));
	     getContentPane().add(tfKoZeit);
	     
	     lSchwierigkeit = new Label("Schwierigkeit");
	     lSchwierigkeit.setBounds(rlSchwierigkeit);
	     lSchwierigkeit.setBackground(new Color(139,115,85));
	     lSchwierigkeit.setForeground(Color.white);
	     getContentPane().add(lSchwierigkeit);
	     

	     cbSchwierigkeit = new JComboBox(schwierigkeitStrings);
	     cbSchwierigkeit.setBounds(rSchwierigkeit);
	     cbSchwierigkeit.setBackground(new Color(255,211,155));
	     getContentPane().add(cbSchwierigkeit);
	     
	     lBewertung = new Label("Bewertung");
	     lBewertung.setBounds(rlBewertung);
	     lBewertung.setBackground(new Color(139,115,85));
	     lBewertung.setForeground(Color.white);
	     getContentPane().add(lBewertung);
	     
	     cbBewertung = new JComboBox(bewertungStrings);
	     cbBewertung.setBounds(rBewertung);
	     cbBewertung.setBackground(new Color(255,211,155));
	     getContentPane().add(cbBewertung);
	     
	     bSpeichern = new Button("Speichern");
	     bSpeichern.setBounds(rSpeichern);
	     bSpeichern.setBackground(new Color(139,115,85));
	     bSpeichern.setForeground(Color.white);
	     bSpeichern.addActionListener(new ActionListener() {
	    	 public void actionPerformed(ActionEvent e) {
	    		
	    		 bSpeichernClicked();
	    	 }
	     });
	     getContentPane().add(bSpeichern);
	     
	     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	     // Fenster sichtbar machen
	     setVisible(true);
	     
	}

	void bSpeichernClicked() {
		
		FileWriter writer;
		File file;
		  
	    // File anlegen
	     file = new File(tfTitel.getText()+ ".dat");
	     try {
	       // new FileWriter(file ,true) - falls die Datei bereits existiert
	       // werden die Bytes an das Ende der Datei geschrieben
	       
	       // new FileWriter(file) - falls die Datei bereits existiert
	       // wird diese �berschrieben
	       writer = new FileWriter(file);
	       
	       // Text wird in den Stream geschrieben
	       writer.write(tfTitel.getText()+ sep + cbKategorie.getSelectedItem() +sep + taZutaten.getText() +sep+ taZubereitung.getText()
	    		   +sep+ tfZuZeit.getText()+sep+ tfKoZeit.getText() +sep+ cbSchwierigkeit.getSelectedItem() +sep+ cbBewertung.getSelectedItem()+sep);
	       
	       // Platformunabh�ngiger Zeilenumbruch wird in den Stream geschrieben
	       writer.write(System.getProperty("line.separator"));

	      
	       
	       // Schreibt den Stream in die Datei
	       // Sollte immer am Ende ausgef�hrt werden, sodass der Stream 
	       // leer ist und alles in der Datei steht.
	       writer.flush();
	       
	       // Schlie�t den Stream
	       writer.close();
	       System.exit(EXIT_ON_CLOSE);
	    } catch (IOException e) {
	      e.printStackTrace();
	    }
	  }
	
}
